//app.js
const amap = require('./libs/amap-wx')
const config = require('./config')
App({
  onLaunch: function () {
    // 初始化云函数
    if (config.isFyApp && wx.cloud) {
      wx.cloud.init({
        traceUser: true,
      })
    }
    // 获取状态栏高度
    if (wx.getMenuButtonBoundingClientRect && wx.getSystemInfo) {
      let menuButtonObject = wx.getMenuButtonBoundingClientRect()
      wx.getSystemInfo({
        success: res => {
          let statusBarHeight = res.statusBarHeight,
            navHeight = statusBarHeight + menuButtonObject.height + (menuButtonObject.top - statusBarHeight) * 2; //导航高度
          this.globalData.navHeight = navHeight
        },
        fail(err) {
          console.log(err);
        }
      })
    }

    // // 展示本地存储能力
    // var logs = wx.getStorageSync('logs') || []
    // logs.unshift(Date.now())
    // wx.setStorageSync('logs', logs)

    // // 登录
    // wx.login({
    //   success: res => {
    //     // 发送 res.code 到后台换取 openId, sessionKey, unionId
    //   }
    // })
    // // 获取用户信息
    // wx.getSetting({
    //   success: res => {
    //     if (res.authSetting['scope.userInfo']) {
    //       // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
    //       wx.getUserInfo({
    //         success: res => {
    //           // 可以将 res 发送给后台解码出 unionId
    //           this.globalData.userInfo = res.userInfo

    //           // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
    //           // 所以此处加入 callback 以防止这种情况
    //           if (this.userInfoReadyCallback) {
    //             this.userInfoReadyCallback(res)
    //           }
    //         }
    //       })
    //     }
    //   }
    // })
  },

  onShow: function (opt) {
    console.log('场景值为', opt.scene)
    this.globalData.scenc = opt.scene
    // 小程序从后台切换到前台时，情况地理位置信息
    this.globalData.location = null
    if (opt.scene !== 1154) {
      // 判断是否可以调用检查接口
      const updateManager = wx.getUpdateManager()
      if (updateManager && updateManager.onUpdateReady) {
        updateManager.onUpdateReady(function () {
          wx.showModal({
            title: '更新提示',
            content: '新版本已经准备好，是否重启应用？',
            success: function (res) {
              if (res.confirm) {
                // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                updateManager.applyUpdate()
              }
            }
          })
        })
      }
    }
  },
  /**
   * 获取位置信息，小程序处于前台状态，只会获取一次
   * @param {function} success 成功回调，参数为定位的数据
   * @param {function} fail 失败回调
   * @param {boolean} update 是否更新位置信息
   * @discussion 使用方法举例：
   * getApp().getLocation ((data) => {
   *      const lon = data.longitude,  // xpoint
          const lat = data.latitude,   // ypoint
        })
   */
  getLocation(success = () => { }, fail = () => { }, updata = false) {
    if (updata) {
      this.globalData.location = null
    }
    // 当本地有缓存数据，直接取缓存的数据
    if (this.globalData.location) {
      success(this.globalData.location)
    } else {
      // 本地没有缓存数据或当前需要重新刷新数据，则调用高德地图获取
      const AMAP = new amap.AMapWX({
        key: this.globalData.amapKey
      })
      const that = this
      // 使用高德api获取位置信息
      AMAP.getRegeo({
        success: data => {
          that.globalData.location = data[0]
          success(data[0])
        },
        fail: err => {
          fail(err)
        }
      })
    }
  },
  cacheLocationData(data) {
    this.globalData.location = data
  },
  globalData: {
    navHeight: 60,
    location: null,
    userInfo: null,
    unionId: '',
    openid: '',
    amapKey: '5afb7824c95c002a82df568b2dca93a5' //高德地图KEY
  }
})